package collection;

import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;

/**
 * java.util.List 接口
 *
 * List可以存放重复元素且有序,该接口上定义了一套List集合都具备的根据下标操作元素的方法
 *
 * 常用实现类:
 * java.util.ArrayList:内部使用数组实现,查询性能更好
 * java.util.LinkedList:内部使用链表实现,增删性能更好(首尾增删元素性能最佳)
 * 对于性能没有特别苛刻要求时,通常使用ArrayList即可.
 */
public class ListDemo1 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
//        List<String> list = new LinkedList<>();
        list.add("one");
        list.add("two");
        list.add("three");
        list.add("four");
        list.add("five");
        System.out.println(list);

        /*
            E get(int index)
            获取指定下标对应的元素
         */
        //获取list集合中第三个元素
        String e = list.get(2);//String e = array[2];
        System.out.println(e);
        //List集合可以使用普通的for循环遍历
        for(int i=0;i<list.size();i++){
            e = list.get(i);
            System.out.println(e);
        }

        /*
            E set(int index,E e)
            将给定元素设置到指定位置上,并将替换下来的元素返回
            该方法是替换操作
         */
        String old = list.set(2,"six");
        System.out.println(list);
        System.out.println(old);


        /*
            将集合反转
            思路:
            第一个和倒数第一个交换位置,以此类推
         */
        for(int i=0;i<list.size()/2;i++){
            //获取正数位置上的元素
            String s = list.get(i);
            //将正数位置上的元素设置到倒数位置上并获取倒数位置的元素
            s = list.set(list.size()-1-i,s);
            //将倒数位置的元素设置到正数位置上
            list.set(i,s);
//            list.set(i,list.set(list.size()-1-i,list.get(i)));
        }
        //Collections是集合的工具类,提供了静态方法reverse可以反转List集合
        Collections.reverse(list);

        //[five,four,six,two,one]
        System.out.println(list);

    }
}






